From: Jonathan Lebon Date: Fri, 30 Jun 2017 16:01:56 +0000 (-0700) Subject: pull: fix GLNX_HASH_TABLE_FOREACH_KV regressions X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~35^2~11 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d5dd576d2095d085ed69f4c1efe7ecdfd9716fb7;p=ostree.git pull: fix GLNX_HASH_TABLE_FOREACH_KV regressions These are regression from #971. We were stuffing a pointer size inside a variable of integer size. So the assignment was spilling over into other variables' storage space. Actually use a gpointer and GPOINTER_TO_[U]INT as was done originally. Also bump libglnx which has static checks for this error in the future. Update submodule: libglnx Closes: #990 Approved by: cgwalters --- diff --git a/libglnx b/libglnx index 01e934c1..a37e6727 160000 --- a/libglnx +++ b/libglnx @@ -1 +1 @@ -Subproject commit 01e934c18efdbac071ebc19a8a95916d324970c9 +Subproject commit a37e672739197b8a7f3bdfe3f17099fe402f9a98 diff --git a/src/libostree/ostree-repo-checkout.c b/src/libostree/ostree-repo-checkout.c index 8729b81c..9ab9a623 100644 --- a/src/libostree/ostree-repo-checkout.c +++ b/src/libostree/ostree-repo-checkout.c @@ -1091,9 +1091,9 @@ ostree_repo_checkout_gc (OstreeRepo *self, if (!to_clean_dirs) return TRUE; /* Note early return */ - GLNX_HASH_TABLE_FOREACH (to_clean_dirs, guint, prefix) + GLNX_HASH_TABLE_FOREACH (to_clean_dirs, gpointer, prefix) { - g_autofree char *objdir_name = g_strdup_printf ("%02x", prefix); + g_autofree char *objdir_name = g_strdup_printf ("%02x", GPOINTER_TO_UINT (prefix)); g_auto(GLnxDirFdIterator) dfd_iter = { 0, }; if (!glnx_dirfd_iterator_init_at (self->uncompressed_objects_dir_fd, objdir_name, FALSE, diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 31c825b8..fd9e9aff 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -4948,8 +4948,10 @@ ostree_repo_pull_from_remotes_async (OstreeRepo *self, /* Any refs left un-downloaded? If so, we’ve failed. */ GLNX_HASH_TABLE_FOREACH_KV (refs_pulled, const OstreeCollectionRef*, ref, - gboolean, is_pulled) + gpointer, is_pulled_pointer) { + gboolean is_pulled = GPOINTER_TO_INT (is_pulled_pointer); + if (is_pulled) continue;